package sistkaraoke.negocio;


import java.util.Collection;

import sistkaraoke.dao.*;
import sistkaraoke.excepcion.DAOExcepcion;
import sistkaraoke.modelo.*;

public class GestionEvento implements IGestionEvento  {
	
	public int insertar(String nombre,String fecha, int capacidad, String descripcion, int idlocal) throws DAOExcepcion {
		
		IEventoDAO dao = new EventoDAO();

		IEvento vlEvento = new Evento();
		vlEvento.setNombre(nombre);
		vlEvento.setFecha(fecha);
		vlEvento.setCapacidad(capacidad);
		vlEvento.setDescripcion(descripcion);
		ILocal vLocal = new Local();
		vLocal.setId(idlocal);
		vlEvento.setLocal(vLocal);
		
		return dao.insertar(vlEvento);
	}
	
	public int actualizar(int idEvento, String nombre,String fecha, int capacidad, String descripcion, int idlocal) throws DAOExcepcion  {
		
		IEventoDAO dao = new EventoDAO();

		IEvento vlEvento = new Evento();
		vlEvento.setIdEvento(idEvento);
		vlEvento.setNombre(nombre);
		vlEvento.setFecha(fecha);
		vlEvento.setCapacidad(capacidad);
		vlEvento.setDescripcion(descripcion);
		ILocal vLocal = new Local();
		vLocal.setId(idlocal);
		vlEvento.setLocal(vLocal);
		
		return dao.actualizar(vlEvento);
	}
	
	public int eliminar(int idEvento) throws DAOExcepcion {
		IEventoDAO dao = new EventoDAO();
		return dao.eliminar(idEvento);
	}
	
	public Collection<IEvento> buscarFiltro(int idEvento,String nombre,String fecha,int capacidad,String descripcion,int idLocal) throws DAOExcepcion{
		IEventoDAO dao = new EventoDAO();
		
		IEvento vlEvento = new Evento();
		vlEvento.setIdEvento(idEvento);
		vlEvento.setNombre(nombre);
		vlEvento.setFecha(fecha);
		vlEvento.setCapacidad(capacidad);
		vlEvento.setDescripcion(descripcion);
		ILocal vLocal = new Local();
		vLocal.setId(idLocal);
		vlEvento.setLocal(vLocal);
		
		return dao.buscar(vlEvento);
	}
	
	public Collection<IEvento> listar() throws DAOExcepcion{
IEventoDAO dao = new EventoDAO();
		
		IEvento vlEvento = new Evento();
		vlEvento.setIdEvento(0);
		vlEvento.setNombre("");
		vlEvento.setFecha("01/01/1900");
		vlEvento.setCapacidad(0);
		vlEvento.setDescripcion("");
		ILocal vLocal = new Local();
		vLocal.setId(0);
		vlEvento.setLocal(vLocal);
		
		return dao.buscar(vlEvento);
	}
	
	public IEvento obtener(int idEvento) throws DAOExcepcion{
		IEventoDAO dao = new EventoDAO();
		
		IEvento vlEvento= new Evento();
		vlEvento.setIdEvento(idEvento);
		vlEvento.setNombre("");
		vlEvento.setFecha("");
		vlEvento.setCapacidad(0);
		vlEvento.setDescripcion("");
		ILocal vLocal = new Local();
		vLocal.setId(0);
		vlEvento.setLocal(vLocal);
		
		Collection<IEvento> cIEventos = dao.buscar(vlEvento);
		
		if(cIEventos.size() > 0)
		{
			for (IEvento evento: cIEventos)
			{
				vlEvento = new Evento();
				vlEvento.setIdEvento(idEvento);
				
				vlEvento.setNombre(evento.getNombre());
				vlEvento.setFecha(evento.getFecha());
				vlEvento.setCapacidad(evento.getCapacidad());
				vlEvento.setDescripcion(evento.getDescripcion());
				vLocal = new Local();
				vLocal.setId(evento.getLocal().getId());
				vLocal.setNombre(evento.getNombre());
				vlEvento.setLocal(vLocal);				
			}
		}
		else
			vlEvento = null;
		
		return vlEvento;
	}
}
